<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>

    var minimum = function (jobs, k) {
      // 记录每个工人的工作时间
      var record = new Array(k).fill(0);
      var min = Infinity;
      function backtrack(index) {
        // 得到一种分配方式，更新最优解
        if (index >= jobs.length) {
          min = Math.min(min, Math.max(...record));
          return;
        }
        var cache = {};
        // 尝试将工作分配给不同的工人
        for (var i = 0; i < record.length; i++) {
          // 剪枝，相同工作时间不需要再次尝试
          var n = record[i];
          if (cache[n]) continue;
          cache[n] = 1;
          // 剪枝，工作时间超过了当前的最优解
          if (record[i] + jobs[index] > min) continue;
          // 改变状态
          record[i] += jobs[index];
          // 递归
          backtrack(index + 1);
          // 回溯，还原状态
          record[i] -= jobs[index];
        }
      }
      backtrack(0);
      return min;
    };
    console.log(minimum(jobs = [3, 2, 3], k = 2))
  </script>
</body>

</html>